import Vue from "vue";
import Vuex from "vuex";
// import App from "./App.vue";
// import App from "./components/child-a.vue";
import App from "./components/child-b.vue";

Vue.use(Vuex);
Vue.config.productionTip = false;
const store = new Vuex.Store({
  strict: true,
  modules: {
    user: {
      namespaced: true,
      state: {
        token: "123456",
      },
      mutations: {
        setNewst(state, data) {
          state.token = data;
        },
      },
      getters: {
        getnewst(state) {
          return state.token.filter((item) => item);
        },
      },
    },
    setting: {
      namespaced: true,
      state: {
        name: "kobe",
      },
      mutations: {
        setNewState(state, data) {
          state.name = data;
        },
      },
    },
  },
  // //放数据的
  // state: {
  //   // 管理数据
  //   students: [
  //     { id: 121, name: "kobe", age: 30 },
  //     { id: 121, name: "arr", age: 23 },
  //     { id: 121, name: "buli", age: 18 },
  //     { id: 121, name: "jmao", age: 17 },
  //   ],
  //   count: 0,
  //   counts: 1,
  //   counta: 2,
  // },
  // //放方法的，要放同步方法
  // mutations: {
  //   // 方法里参数 第一个参数是当前store的state属性
  //   // payload 载荷 运输参数 调用mutaiions的时候 可以传递参数 传递载荷
  //   addCount(state, jia) {
  //     console.log(1);
  //     state.counta += jia;
  //   },
  //   Count(state, jia) {
  //     console.log(2);
  //     state.count += jia;
  //   },
  //   //  这里的state表示的是user的state
  //   updateToken(state) {
  //     state.token = 678910;
  //   },
  // },
  // //模块化
  // modules: {
  //   user: {
  //     namespaced: true,
  //     state: {
  //       token: "12345",
  //     },
  //   },
  //   setting: {
  //     state: {
  //       name: "Vuex实例",
  //     },
  //   },
  // },
  // //封装的作用，简化的作用
  // getters: {
  //   more20(state) {
  //     return state.students.filter((s) => s.age > 20);
  //   },
  //   more20s(state) {
  //     return state.students.filter((s) => s.age < 20).length;
  //   },
  //   token: (state) => state.user.token,
  // },
  // //异步获取数据
  // actions: {
  //   getAsyncCount(context) {
  //     //一秒给一个数
  //     setTimeout(function() {
  //       context.commit("Count", 123);
  //     }, 1000);
  //   },
  // },
});

new Vue({
  store,
  render: (h) => h(App),
}).$mount("#app");
